// Copyright (C) 2002-2008 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h

#ifndef __I_FPS_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
#define __I_FPS_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__

//#include "ISceneNode.h"
//#include "IFpsParticleBoxEmitter.h"
//#include "IFpsParticleAttractionAffector.h"
//#include "IFpsParticleFadeOutAffector.h"
//#include "IFpsParticleGravityAffector.h"
//#include "IFpsParticleRotationAffector.h"
#include "IFpsParticleSizeAffector.h"
//#include "IFpsParticleSpinAffector.h"
//#include "dimension2d.h"


//! A particle system scene node for creating snow, fire, exlosions, smoke...
/** A scene node controlling a particle System. The behavior of the particles
can be controlled by setting the right particle emitters and affectors.
You can for example easily create a campfire by doing this:

\code
	scene::IParticleSystemSceneNode* p = scenemgr->addParticleSystemSceneNode();
	p->setParticleSize(core::dimension2d<f32>(20.0f, 10.0f));
	scene::IParticleEmitter* em = p->createBoxEmitter(
		core::aabbox3d<f32>(-5,0,-5,5,1,5),
		core::vector3df(0.0f,0.03f,0.0f),
		40,80, video::SColor(0,255,255,255),video::SColor(0,255,255,255), 1100,2000);
	p->setEmitter(em);
	em->drop();
	scene::IParticleAffector* paf = p->createFadeOutParticleAffector();
	p->addAffector(paf);
	paf->drop();
\endcode

*/

class IFpsParticleSystemSceneNode
{
public:
	virtual void deserializeAttributes(IAttributes* in) = 0;
	virtual IFpsParticleSystemSceneNode* clone() = 0;
	virtual void doParticleSystem(float time) = 0;
	virtual void render() = 0;
	virtual void Link() = 0;
	virtual void FreeLink() = 0;
	virtual void StopEmitting() = 0;
	virtual void Restart() = 0;
	virtual bool IsActive() = 0;
	virtual bool IsEnded() = 0;
	virtual void SetPosition(float x, float y,bool bIsNew) = 0;
};

#endif

